﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using l1cs.server.model.Instance;

namespace l1cs.server.serverpackets
{
    public class S_WarTime : ServerBasePacket
    {
        private static Logger _log = Logger.getLogger( typeof( S_WarTime ).FullName );

        public S_WarTime( DateTime dateTime )
        {
            // 1997/01/01 17:00を基点としている
            DateTime base_cal = new DateTime( 1997, 0, 1, 17, 0, 0 );
            long base_millis = base_cal.Ticks / 10000;
            long millis = dateTime.Ticks / 10000;
            long diff = millis - base_millis;
            diff -= 1200 * 60 * 1000; // 誤差修正
            diff = diff / 60000; // 分以下切捨て
            // timeは1加算すると3:02（182分）進む
            int time = (int)( diff / 182 );

            // writeDの直前のwriteCで時間の調節ができる
            // 0.7倍した時間だけ縮まるが
            // 1つ調整するとその次の時間が広がる？
            writeC( Opcodes.S_OPCODE_WARTIME );
            writeH( 6 ); // リストの数（6以上は無効）
            writeS( Config.TIME_ZONE ); // 時間の後ろの（）内に表示される文字列
            writeC( 0 ); // ?
            writeC( 0 ); // ?
            writeC( 0 );
            writeD( time );
            writeC( 0 );
            writeD( time - 1 );
            writeC( 0 );
            writeD( time - 2 );
            writeC( 0 );
            writeD( time - 3 );
            writeC( 0 );
            writeD( time - 4 );
            writeC( 0 );
            writeD( time - 5 );
            writeC( 0 );
        }

        override
        public byte[] getContent()
        {
            return getBytes();
        }

        override
        public String getType()
        {
            return "[S] S_WarTime";
        }
    }
}